﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.EnlaceDatos.SqlServer;
using AjaxControlToolkit;

namespace vudu.PaginasWeb.G6Pensum
{
    public partial class SuspenderPensum : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela miEscuela = (Escuela)Session["Usuario"];
                
                nombreEscuela.Text ="Escuela: "+ miEscuela.NombreEscuela;
                Session["idMiEscuela"] = miEscuela.IdEscuela;
                //carga el pensum activo, para solo uno ser desactivado
                CargaPensumActivo(miEscuela);
            }

            catch 
            {
                mensaje.Text = "Atención: No se se encuentra información de este pensum";
                mensaje.CssClass = "transaccionFallida";
                mensaje.Visible = true;
            }

        }

        //metodo encargado de mostrar el pensum activo
        public void CargaPensumActivo(Escuela miEscuela)
        {
            Pensum elActivo = new Pensum();
            elActivo.IdPensum = miEscuela.ConsultarPensumActivoEscuela(miEscuela);
            elActivo.PeriodosActivos = elActivo.ConsultarPeridosAcademicos(elActivo.IdPensum);
            //validacion si no hay un pensum activo, ningun pensum puede tener id 0
            if (elActivo.IdPensum == 0)
                pensumNodisponible.Visible=true;
            else
            {
                TableRow fila = new TableRow();
                Button btnSuspenderPensum= new Button();
                btnSuspenderPensum.ID = elActivo.IdPensum.ToString();
                btnSuspenderPensum.Text = "Suspender Pensum";
                btnSuspenderPensum.CssClass = "boton";
                btnSuspenderPensum.Attributes.Add("onclick", "return confirm('¿Esta seguro de querer suspender el pensum actual?');");
                btnSuspenderPensum.Click += new System.EventHandler(SuspenderEstePensum);
                TableCell campoBoton = new TableCell();
                campoBoton.Controls.Add(btnSuspenderPensum);
                TableCell campoCabera = new TableCell();
                Label titulo = new Label();
                titulo.ID = "campoCabera";
                titulo.Text = "Periodos academicos del pensum : " + "<br/>" +
                              ListaPeriodosAcademicos(elActivo.PeriodosActivos);
                campoCabera.Controls.Add(titulo);
                campoCabera.Attributes.Add("style", "padding:5px");
                fila.Controls.Add(campoCabera);
                fila.Controls.Add(campoBoton);
                TablePensumActivo.Rows.Add(fila);
            }
            
                
        }

        //metodo encargado de listar y concatenar los periodos academicos de ese pensum para ser impresos en formato html
        public string ListaPeriodosAcademicos(List<String> misPeriodosVigentes)
        {
            String fechaPeriodoAcademico = " ";
            foreach (String i in misPeriodosVigentes)
            {
                fechaPeriodoAcademico = fechaPeriodoAcademico + i + "<br/>";

            }
            return fechaPeriodoAcademico;
        }

        //metodo encargado de cambiar el estatus del pensum seleccionado (ejecucion del boton)
        public void SuspenderEstePensum(object sender, EventArgs e)
        {
            Pensum miPensum = new Pensum();
            Button botonPresionado = (Button)sender;
            miPensum.IdPensum= Convert.ToInt32(botonPresionado.ID);
            //realizada la operacion se muestra una confirmacion
            if (miPensum.DesactivarPensum(miPensum))
                  ShowAlertMessage("El pensum fue desactivado sin problemas");
            else
            {
                mensaje.Text = "Error: no se puede conectar con la base de datos";
                mensaje.CssClass = "transaccionFallida";
                mensaje.Visible = true;
            }
            
       }

        //metodo para mostrar ventanas de alerta
        public static void ShowAlertMessage(string error)
        {
            Page page = HttpContext.Current.Handler as Page;
            if (page != null)
            {
                error = error.Replace("'", "\'");
                ScriptManager.RegisterStartupScript(page, page.GetType(), "err_msg", "alert('" + error + 
                    "');window.location='../Home/HomeEscuela.aspx';", true);
            }
        }
      

    }
}